package com.cyl.manager.oms.domain.vo;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.cyl.config.JavaLongToStringConvert;
import com.cyl.config.ecxle.ExcelCouponCategoryLongConvert;
import com.cyl.config.ecxle.ExcelSysDictIntegerConvert;
import com.cyl.config.ecxle.ExcelSysDictLongConvert;
import com.cyl.config.ecxle.ExcelSysDictStringGgConvert;
import com.cyl.config.ecxle.annotation.ExcelSysDictAnnotation;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel(value = "管理后台订单VO")
@ExcelIgnoreUnannotated
public class ManagerOrderVO {

	@ApiModelProperty("产品类型  1 正常商品 2 福利券商品 3 积分商品")
    @ExcelSysDictAnnotation(value = "pms_product_lx")
    private String cplx;
	  
    @ApiModelProperty(name = "orderSn",value = "订单编号",required = true,dataType = "String")
    @ExcelProperty("订单编号")
    private String orderSn;
    
    @ApiModelProperty(name = "deptDpId", value = "店铺部门id", required = true, dataType = "Long")
  	@ExcelProperty("所属店铺id")
  	private Long deptDpId;
    
    @ExcelSysDictAnnotation(value = "SYS_DEPT_DPBM_DICT")
    @ExcelProperty(value = "店铺名称", converter = ExcelSysDictLongConvert.class)
  	private Long deptDpIdDict;
    
    @ApiModelProperty(name = "productId",value = "商品id",required = true,dataType = "Long")
    @ExcelProperty(value = "商品id" , converter = JavaLongToStringConvert.class)
    private Long productId;
    
    @ExcelProperty("商品名称")
    @ApiModelProperty(name = "productName",value = "商品名称",required = true,dataType = "String")
    private String productName;

    @ExcelProperty(value = "商品sku属性" , converter = ExcelSysDictStringGgConvert.class)
    @ApiModelProperty(name = "spData",value = "商品sku属性",required = true,dataType = "String")
    private String spData;
   
    @ExcelProperty("购买数量")
	private Integer quantity;


   @ExcelProperty("支付金额")
   @ApiModelProperty(name = "payAmount",value = "支付金额",required = true,dataType = "BigDecimal")
   private BigDecimal payAmount;
   
   @ApiModelProperty("手续费金额")
   @ExcelProperty("手续费金额")
   private BigDecimal feeAmount;
   
   @ApiModelProperty(name = "memberId", value = "客户id", required = true, dataType = "Long")
   @ExcelProperty(value = "用户id" , converter = JavaLongToStringConvert.class)
   private Long memberId;
  
   @ExcelProperty("用户昵称")
   @ApiModelProperty(name = "nickName",value = "用户昵称",required = true,dataType = "String")
   private String nickName;


   @ExcelProperty("用户下单时间")
   @ApiModelProperty(name = "createTime",value = "下单时间",required = true,dataType = "Date")
   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   private LocalDateTime createTime;

   @ExcelProperty("用户支付时间")
   @ApiModelProperty(name = "payTime",value = "支付时间",required = true,dataType = "Date")
   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   private LocalDateTime payTime;
   
   @ApiModelProperty("退款成功时间")
   @ExcelProperty("退款成功时间")
   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   private LocalDateTime aftersaleTime;
   
   @ExcelProperty("核销完成时间")
   @ApiModelProperty(name = "receiveTime",value = "确认收货时间",required = true,dataType = "Date")
   @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
   private LocalDateTime receiveTime;
   
   
    
    @ExcelProperty("收货人姓名")
    private String receiverName;

    @ExcelProperty("收货人电话")
    private String receiverPhone;
    
    @ExcelProperty("收货人省份")
    private String receiverProvince;

    @ExcelProperty("收货人城市")
    private String receiverCity;

    @ExcelProperty("收货人区县")
    private String receiverDistrict;

    @ExcelProperty("收货人详情地址")
    private String receiverDetailAddress;
    

    
    
    @ApiModelProperty("兑换的福利券分类id")
    @ExcelProperty("兑换的福利券分类id")
    private Long dhCouponCategoryId;
    
    
    @ExcelSysDictAnnotation(value = "OMS_COUP_CATE_DICT")
    @ExcelProperty(value = "兑换福利券的名称", converter = ExcelCouponCategoryLongConvert.class)
  	private Long dhCouponCategoryIdDict;
    
    @ApiModelProperty("兑换福利券的名称")
    // @Excel(name = "兑换福利券的名称")
    // @ExcelProperty(value = "兑换福利券的名称", converter = ExcelCouponCategoryLongConvert.class)
    private String dhCouponCategoryMc;
    
    @ApiModelProperty("兑换福利券的数量")
    @ExcelProperty("兑换福利券的数量")
    private Long dhCouponCategoryNum;
    
   
    
    @ApiModelProperty("兑换积分数量")
    @ExcelProperty("兑换积分数量")
    private BigDecimal dhJssl;
    
    
    @ExcelProperty(value = "锁定编号",converter = JavaLongToStringConvert.class)
    private Long lockId;
  
    @ApiModelProperty(name = "id",value = "订单id",required = true,dataType = "Long")
    @ExcelProperty(value = "订单id", converter = JavaLongToStringConvert.class)
    private Long id;

    @ExcelProperty(value = "订单状态", converter = ExcelSysDictIntegerConvert.class)
    @ApiModelProperty(name = "status",value = "订单状态：0->待付款；1->待发货；2->已发货；3->已完成；4->已关闭；5->无效订单",required = true,dataType = "Integer")
    @ExcelSysDictAnnotation(value = "oms_order_status")
    private Integer status;
    
    @ApiModelProperty("核销人员id")
    @ExcelProperty(value = "核销人员id" , converter = JavaLongToStringConvert.class)
    private Long hxmemberid;
    
    @ApiModelProperty("核销人员昵称")
    @ExcelProperty("核销人员昵称")
    private String hxmembernc;
    
    @ExcelProperty("备注")
    @ApiModelProperty(name = "note",value = "备注",required = true,dataType = "String")
    private String note;

    @ExcelProperty("商家备注")
    @ApiModelProperty("商家备注")
    private String merchantNote;

 
    @ApiModelProperty(name = "deptZbjId", value = "直播间部门", required = true, dataType = "Long")
    @ExcelProperty(value = "所属直播间id" , converter = JavaLongToStringConvert.class)
    private Long deptZbjId;
    
    
	 @ApiModelProperty(name = "deptTzId", value = "团长部门id", required = true, dataType = "Long")
	 @ExcelProperty(value = "所属区域id" , converter = JavaLongToStringConvert.class)
	 private Long deptTzId;
	

    @ExcelProperty("订单总金额")
    @ApiModelProperty(name = "totalAmount",value = "订单总金额",required = true,dataType = "BigDecimal")
    private BigDecimal totalAmount;
     
    

    @ApiModelProperty("供应商id")
    @ExcelProperty("供应商id")
    private Long brandId;
    
    /** 采购价 */
    @ApiModelProperty("采购价")
    @Excel(name = "采购价")
    private BigDecimal cgprice;
    
    @ApiModelProperty("店铺结算金额")
    private BigDecimal dpjsprice;
    
    @ApiModelProperty("平台结算金额")
    private BigDecimal sysprice;
    
    @ApiModelProperty(name = "productInfo", value = "订单商品数据")
    private List<ManagerOrderProductVO> productList;

    @ExcelProperty("发货时间")
    @ApiModelProperty(name = "deliveryTime",value = "发货时间",required = true,dataType = "LocalDataTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime deliveryTime;

    @ExcelProperty("物流单号")
    @ApiModelProperty(name = "deliverySn",value = "物流单号",required = true,dataType = "String")
    private String deliverySn;


    @ExcelProperty("订单标记")
    private String mark;

 
    
    
    
    
    /*   2025-02-08  */
 
	 
    @ApiModelProperty("供应商发货状态:1订单锁定，2备货中，3已发货 ,3已签收")
    //@ExcelProperty("供应商发货状态:1订单锁定，2备货中，3已发货 ,3已签收")
    private Integer sendGysStatus; 
    

    
    @ApiModelProperty("订单流程：0 正常流程 1支付就待提货")
    //@ExcelProperty("订单流程：0正常流程  1支付就待提货 2支付就核销完成")
    private Integer process;
    
    @ApiModelProperty("收款商户编号")
    //@ExcelProperty("收款商户编号")
	private String merchantno;//商户编号
	
    @ApiModelProperty("易宝订单号")
    //@ExcelProperty("易宝订单号")
	private String uniqueorderno;//易宝订单号
   
    
   // @ExcelProperty("电话号码")
    @ApiModelProperty(name = "userPhone",value = "用户账号",required = true,dataType = "String")
    private String userPhone;

    //@ExcelProperty("用户头像")
    @ApiModelProperty(name = "avatar",value = "用户头像",required = true,dataType = "String")
    private String avatar;

   

    //@ExcelProperty("退款状态，枚举值：1：无售后或售后关闭，2：售后处理中，3：退款中，4： 退款成功")
    //@ApiModelProperty("退款状态，枚举值：1：无售后或售后关闭，2：售后处理中，3：退款中，4： 退款成功")
    private Integer aftersaleStatus;

    //@ExcelProperty("商品图片")
    @ApiModelProperty(name = "pic",value = "商品图片",required = true,dataType = "String")
    private String pic;
    
    //@ExcelProperty("购买数量")
    @ApiModelProperty(name = "buyNum",value = "购买数量",required = true,dataType = "Integer")
    private Integer buyNum;
    
    //@ExcelProperty("支付方式0->未支付；1->支付宝；2->微信")
    @ApiModelProperty(name = "payType",value = "支付方式 支付方式：0->未支付；1->支付宝；2->微信",required = true,dataType = "Integer")
    private Integer payType;
    
    //@ExcelProperty("用户名称")
    @ApiModelProperty(name = "userName",value = "用户名称",required = true,dataType = "String")
    private String userName;
    
    //@ExcelProperty("标识")
    private BigDecimal couponAmount;
    
    

    @ApiModelProperty("可退款时间")//在此时间之前可以退款，但受到锁定的限制
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime ktkTime;
    

    @ApiModelProperty("冗余字段")
    private String paramJson;
    
    @ApiModelProperty("群主id")
    @Excel(name = "群主id")
    private Long spreaduid;

    
}
